package cn.itsource.mq.topic;

import com.rabbitmq.client.*;

import java.io.IOException;

/**
 * @description: 消费者
 */
public class Consumer1 {
    //绑定的队列名称
    public static final String QUEUE_DIRECT_1 = "queue_direct_1";
    //交换机名称
    public static final String EXCHANGE_DIRECT = "exchange_topic";

    /**
     * 步骤：
     * 1、创建连接
     * 2、创建信道
     * 3、创建队列
     * 4、绑定队列到交换机
     * 5、监听队列
     * 6、处理消息
     */
    public static void main(String[] args) throws Exception {
        //定义连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //设置服务地址
        factory.setHost("localhost");
        //1、创建连接，通过工厂获取连接
        //写在try里面，含义是：到时候会自动关闭连接
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
//
//        //设置消息并发处理数量
//        channel.basicQos(1);
//
//        //3、创建队列
//        channel.queueDeclare(QUEUE_DIRECT_1, true, false, false, null);
//
//        //4、绑定队列到交换机  表示监听路由key为error,和info
//        channel.queueBind(QUEUE_DIRECT_1, EXCHANGE_DIRECT, ".error");
//        channel.queueBind(QUEUE_DIRECT_1, EXCHANGE_DIRECT, "#.info");
//
//        //5、监听队列
//        channel.basicConsume(QUEUE_DIRECT_1, false, new DefaultConsumer(channel) {
//            //6、处理消息
//            @Override
//            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
//                System.out.println("我是消费者Consumer1，收到消息：" + new String(body));
//                //手动签收
//                channel.basicAck(envelope.getDeliveryTag(), false);
//            }
//        });
        channel.exchangeDelete(EXCHANGE_DIRECT);
    }
}